/**
 * Project: topdt-jbpm
 * Copyright 2013  Top Digital Technology  Co. Ltd.
 * All right reserved.
 */
package com.topdt.jbpm.form;

import java.util.Map;

import com.topdt.jbpm.model.Application;
import com.topdt.jbpm.model.Todo;
import com.topdt.jbpm.model.Work;

/**
 * 建立日期 : 2013-5-20 下午2:28:52<br>
 * 作者 : balance<br>
 * 模块 : <br>
 * 描述 : <br>
 * 修改历史: 序号 日期 修改人 修改原因 <br>
 * 1 <br>
 * 2 <br>
 */
public interface FormHandle {

	
	/** 
	 *  @Description    : 装配表单
	 *  @Method_Name    : assemble
	 *  @param app
	 *  @param workId
	 *  @param activity
	 *  @param userId
	 *  @param context
	 *  @return 
	 *  @return         : FormUI
	 *  @Creation Date  : 2015年3月10日 下午6:44:27 
	 *  @version        : v1.00
	 *  @Author         : calonlan
	 
	 *  @Update Date    : 2015年3月10日 下午6:44:27 
	 *  @Update Author  : calonlan
	 */
	public FormUI assemble(Application app, String workId, String activity, String userId, Map<String, Object> context);

	public Document saveForm(String appId, Document doc);

	
	/** 
	 *  @Description    : 将请求参数转化为文档(业务表单对象)，如果是通用表单转换为FormInstance,
	 *  					如果是自定义表单转换为自定义表单对象，由客户程序最后实现
	 *  @Method_Name    : convert2Doc
	 *  @param parameter
	 *  @return 
	 *  @return         : Document
	 *  @Creation Date  : 2015年3月10日 下午6:44:55 
	 *  @version        : v1.00
	 *  @Author         : calonlan
	 
	 *  @Update Date    : 2015年3月10日 下午6:44:55 
	 *  @Update Author  : calonlan
	 */
	public Document convert2Doc(Map<String, String[]> parameter);

	
	/** 
	 *  @Description    : 获取文档(业务表单对象)，由客户程序最后实现
	 *  @Method_Name    : getDocument
	 *  @param documentId
	 *  @return 
	 *  @return         : Document
	 *  @Creation Date  : 2015年3月10日 下午6:46:00 
	 *  @version        : v1.00
	 *  @Author         : calonlan
	 
	 *  @Update Date    : 2015年3月10日 下午6:46:00 
	 *  @Update Author  : calonlan
	 */
	public Document getDocument(String documentId);

	
	/** 
	 *  @Description    : 删除文档(业务表单对象)，由客户程序最后实现
	 *  @Method_Name    : deleteDoc
	 *  @param documentId 
	 *  @return         : void
	 *  @Creation Date  : 2015年3月10日 下午6:46:52 
	 *  @version        : v1.00
	 *  @Author         : calonlan
	 
	 *  @Update Date    : 2015年3月10日 下午6:46:52 
	 *  @Update Author  : calonlan
	 */
	public void deleteDoc(String documentId);
	
	
	/** 
	 *  @Description    : 其它的业务处理
	 *  @Method_Name    : executeBusiness
	 *  @param app
	 *  @param work 
	 *  @return         : void
	 *  @Creation Date  : 2015年3月19日 下午3:07:56 
	 *  @version        : v1.00
	 *  @Author         : calonlan
	 
	 *  @Update Date    : 2015年3月19日 下午3:07:56 
	 *  @Update Author  : calonlan
	 */
	public void executeBusiness(Application app, Work work);

}
